﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;
//using VIA.Integration;

//namespace VIA.SiMoJi.Domain.Electronics
//{
//    public class Controller : ISwitchController
//    {
//        public static readonly Controller DefaltController = new Controller();
//        public static bool Read(CardIoPoint ioPoint)
//        {
//            short data = short.MinValue;
//            if (ioPoint.IoMode == IoModes.Senser)
//            {
//                var value = LTDMC.dmc_read_inbit(Electronic.CardId, (ushort)ioPoint.PortNo);
//                return value == 0;
//            }
//            else
//                data = LTDMC.dmc_read_outbit(Electronic.CardId, (ushort)ioPoint.PortNo);
//            return data == 0;
//        }

//        public static bool Write(CardIoPoint ioPoint, bool value)
//        {
//            short data = LTDMC.dmc_write_outbit(Electronic.CardId, (ushort)ioPoint.PortNo, value ? (ushort)0 : (ushort)1);
//            return data == 0;
//        }

//        public bool Read(IoPoint ioPoint)
//        {
//            if (!_isConnected) return false;
//            if (ioPoint is CardIoPoint point)
//            {
//                return Read(point);
//            }
//            else throw (new Exception($"IoPoint类型无地址参数，无法读取！"));

//        }

//        public void Write(IoPoint ioPoint, bool value)
//        {
//            if (!_isConnected) return;
//            if (ioPoint is CardIoPoint point)
//            {
//                Write(point, value);
//            }
//            else throw (new Exception($"IoPoint类型无地址参数，无法写入！"));
//        }
//        bool _isConnected;
//        /// <summary>
//        /// 初始化板卡
//        /// </summary>
//        /// <param name="error"></param>
//        /// <returns></returns>
//        public bool InitCard(out string error)
//        {
//            error = string.Empty;
//            if (_isConnected) return true;
//            short sNum = LTDMC.dmc_board_init();//获取卡数量
//            if (sNum <= 0 || sNum > 8)
//            {
//                error = "初始卡失败，未检测到IO卡！";
//                _isConnected = false;
//            }
//            else
//            {
//                ushort usNum = 0;
//                ushort[] arrusCardList = new ushort[8];
//                uint[] arrunCardTypes = new uint[8];
//                short sRtn = LTDMC.dmc_get_CardInfList(ref usNum, arrunCardTypes, arrusCardList);
//                if (sRtn != 0)
//                {
//                    error = $"获取卡信息失败,错误代码：{sRtn}";
//                    return false;
//                }
//                ushort usCardId = arrusCardList[0];
//                _isConnected = true;
//            }
//            return _isConnected;
//        }
//    }
//}
